import Fly from '../../utils/flyio/index'
const fly = new Fly()
const app = getApp();
class RequestModel {
    constructor() {
        this.initFlySetting()
    }

    /**
     * @description 初始化Flyio配置，全局的拦截处理
     */
    initFlySetting() {
        //定义请求的基本路径
        fly.config.baseURL = app.globalData.rootPath
        //请求拦截器
        fly.interceptors.request.use(request => {
            if (request.method == 'POST') {
                //拦截处理
                request.headers = { //请求头
                    "Content-Type": "application/json",
                }
            } else {
                //拦截处理
                request.headers = { //请求头
                    "Content-Type": "application/x-www-form-urlencoded",
                }
            }
            return request
        })

        //响应拦截
        fly.interceptors.response.use(response => {
            //拦截处理操作
            console.log('RequestCode', response)
            if (response.status == 200) {
                if (response.data.status == 0) {
                    return response.data
                } else {
                    //全局错误处理
                    if (response.data.errmsg == '参数authId未上传或值为空') {
                        wx.showToast({
                            title: '身份已过期，请重新登录！',
                            icon: 'none',
                            duration: 2000
                        })
                    } else if (response.data.errmsg == '身份信息过期') {
                        app.globalData.authority = '-1'
                        wx.showToast({
                            title: '口令已过期',
                            icon: 'none',
                            duration: 2000
                        })
                        setTimeout(function() {
                            wx.switchTab({
                                url: `/pages/index/index`
                            })
                        }, 1500)
                    } else {
                        wx.showToast({
                            title: response.data.errmsg,
                            icon: 'none',
                            duration: 2000
                        })
                    }
                }
            }
            if (response.status == 504) {
                wx.showToast({
                    title: '服务器暂无响应，请稍后再试',
                    icon: 'none',
                    duration: 2000
                })
            }
            if (response.status == 502 || response.status == 404) {
                wx.showToast({
                    title: '服务器异常，请稍后再试',
                    icon: 'none',
                    duration: 2000
                })
            }
            if (response.status == 500) {
                wx.showToast({
                    title: '数据库异常，请稍后再试',
                    icon: 'none',
                    duration: 2000
                })
            }
        })
    }

    /**
     * 
     * @param {object} params 封装的get请求： url:请求地址  data：请求数据
     */
    getRequest(params) {
        return fly.get(params.url, params.data)
    }

    /**
     * 
     * @param {object} params 封装的post请求： url:请求地址  data：请求数据 options:请求额外参数
     */
    postRequest(params) {
        return fly.post(params.url, params.data, params.options)
    }

}
export default RequestModel